空間機(jī)器人中央計(jì)算機(jī)的雙機(jī)熱備份
2014/2/26 12:12:27
1 雙機(jī)熱備份系統(tǒng)的硬件平臺(tái)設(shè)計(jì)
考慮到空間機(jī)器人中央控制計(jì)算機(jī)的雙機(jī)熱備份系統(tǒng)的特殊性,所構(gòu)建的硬件平臺(tái)如圖1所示。
互為備份的中央控制計(jì)算機(jī)采用完全相同的設(shè)計(jì),通過內(nèi)部和外部的CAN總線與控制模塊和指令系統(tǒng)分別相連。熱備份時(shí),主、備機(jī)從CAN總線上同時(shí)接收數(shù)據(jù),但只有主機(jī)可以通過CAN總線向外部輸出指令及控制數(shù)據(jù)。
主備機(jī)之間通過RS485總線相連,實(shí)現(xiàn)雙機(jī)之間數(shù)據(jù)監(jiān)測(cè)和同步等功能。在主機(jī)和備機(jī)的PIO口分別引出一條心跳線,定時(shí)發(fā)出脈沖信號(hào),用來檢查判斷對(duì)方機(jī)是否具備基本運(yùn)行能力。雙機(jī)進(jìn)行切換時(shí),通過仲裁邏輯電路改變雙機(jī)系統(tǒng)的當(dāng)班權(quán),完成系統(tǒng)的切換操作。
2 雙機(jī)熱備份策略
為保證空間機(jī)器人系統(tǒng)正常、穩(wěn)定地運(yùn)行,根據(jù)空間機(jī)器人中央控制計(jì)算機(jī)雙機(jī)熱備份系統(tǒng)的特點(diǎn),主備雙機(jī)需要根據(jù)系統(tǒng)的同步數(shù)據(jù)和心跳信號(hào)對(duì)對(duì)方機(jī)的運(yùn)行情況進(jìn)行監(jiān)測(cè),保持主備雙機(jī)同步運(yùn)行。當(dāng)系統(tǒng)發(fā)生故障時(shí)利用系統(tǒng)同步數(shù)據(jù)和心跳信號(hào),定位系統(tǒng)發(fā)生的故障,并對(duì)故障源進(jìn)行判斷,完成切換。在切換后,系統(tǒng)將嘗試恢復(fù)故障,整個(gè)策略示意如圖2所示。
2.1 心跳信號(hào)
心跳信號(hào)是該中央控制計(jì)算機(jī)運(yùn)行時(shí)發(fā)送的周期性脈沖信號(hào),是中央控制計(jì)算機(jī)正常運(yùn)行的判斷依據(jù)。
主備雙機(jī)可以通過對(duì)對(duì)方機(jī)心跳信號(hào)的監(jiān)測(cè),來判斷對(duì)方機(jī)是否正常運(yùn)行,同時(shí)心跳信號(hào)也是裁決故障時(shí)的一種輔助判據(jù)。當(dāng)發(fā)現(xiàn)備機(jī)無心跳信號(hào)時(shí),主機(jī)切換到單機(jī)模式,備機(jī)由外部指令系統(tǒng)進(jìn)行處理;當(dāng)發(fā)現(xiàn)主機(jī)無心跳信號(hào)時(shí),備機(jī)獲得當(dāng)班權(quán)變?yōu)橹鳈C(jī)并進(jìn)行輸出,主機(jī)交由外部指令系統(tǒng)處理。
2.2 同步監(jiān)測(cè)
雙機(jī)同步是雙機(jī)熱備份系統(tǒng)能夠正常進(jìn)行系統(tǒng)監(jiān)測(cè),對(duì)故障進(jìn)行正確判斷的基礎(chǔ)。正確的同步策略是雙機(jī)系統(tǒng)能夠及時(shí)檢測(cè)出軟件故障并執(zhí)行正確切換動(dòng)作的前提,也是保證系統(tǒng)在故障發(fā)生之后成功恢復(fù)的關(guān)鍵要素。
為了保證雙機(jī)能夠長(zhǎng)期、穩(wěn)定地處于同步之中,維持系統(tǒng)正常運(yùn)行,制定4項(xiàng)關(guān)鍵同步方法。
①雙機(jī)時(shí)鐘周期同步。當(dāng)主備雙機(jī)上電后,在主機(jī)啟動(dòng)周期定時(shí)器的同時(shí),應(yīng)同時(shí)向備機(jī)發(fā)出消息,通知備機(jī)啟動(dòng)周期定時(shí)器。由于空間機(jī)器人系統(tǒng)以生命周期為單位執(zhí)行任務(wù),所以生命周期的同步是整個(gè)系統(tǒng)保持同步的基礎(chǔ)。若該操作失敗,必須重新進(jìn)行周期定時(shí)器的同步。
②雙機(jī)任務(wù)初始化同步。為保證主備雙機(jī)任務(wù)在同一時(shí)間啟動(dòng),應(yīng)在任務(wù)啟動(dòng)指令傳遞到主機(jī)時(shí),由主機(jī)向備機(jī)發(fā)出指令,啟動(dòng)備機(jī)任務(wù),使備機(jī)進(jìn)人工作模式,其具體步驟如圖3所示。
③雙機(jī)同步數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。機(jī)器人執(zhí)行任務(wù)期間,主備雙機(jī)將在每個(gè)系統(tǒng)生命周期的開始向?qū)Ψ綑C(jī)發(fā)送同步數(shù)據(jù),并將收到的數(shù)據(jù)與自身數(shù)據(jù)進(jìn)行比對(duì),完成對(duì)系統(tǒng)同步數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。
為保證對(duì)系統(tǒng)監(jiān)測(cè)的全面性和判斷故障的準(zhǔn)確性,提取任務(wù)號(hào)、任務(wù)階段號(hào)、系統(tǒng)周期、實(shí)際關(guān)節(jié)角度以及一個(gè)隨機(jī)碼作為系統(tǒng)的同步數(shù)據(jù),如表1所列。
④雙機(jī)再同步。當(dāng)發(fā)現(xiàn)雙機(jī)系統(tǒng)的數(shù)據(jù)出現(xiàn)兩個(gè)周期以內(nèi)的超前或滯后現(xiàn)象時(shí),不認(rèn)為發(fā)生系統(tǒng)故障而進(jìn)行切換,而是直接更新備機(jī)同步數(shù)據(jù),使備機(jī)重新與主機(jī)同步。
2.3 裁決邏輯
裁決是雙機(jī)熱備份系統(tǒng)中至關(guān)重要的一個(gè)環(huán)節(jié)。誘發(fā)空間機(jī)器人系統(tǒng)出現(xiàn)故障的原因很多,在其工作的空間環(huán)境中存在著大量高能粒子,極易使中央控制計(jì)算機(jī)電位發(fā)生反轉(zhuǎn)造成系統(tǒng)失常。通信線路的故障和隨機(jī)產(chǎn)生的誤碼率也很容易造成系統(tǒng)失常。通過分析總結(jié),空間機(jī)器人系統(tǒng)最易出現(xiàn)3種故障類型,即雙機(jī)通信線路故障、系統(tǒng)任務(wù)流程故障和系統(tǒng)控制數(shù)據(jù)故障。為保證雙機(jī)熱備份系統(tǒng)及時(shí)、準(zhǔn)確地檢測(cè)故障,判斷故障源,做出正確的切換動(dòng)作,分別為3種故障制定相應(yīng)的故障裁決邏輯。
(1)雙機(jī)通信線路故障
裁決邏輯:當(dāng)RS485接收模塊連續(xù)3周期沒有接收到對(duì)方的同步數(shù)據(jù)時(shí),給出故障信號(hào)。為避免計(jì)算機(jī)重復(fù)進(jìn)行裁決判斷,停止同步數(shù)據(jù)發(fā)送,同時(shí)檢測(cè)備機(jī)心跳信號(hào)。若備機(jī)心跳信號(hào)停止,則由主機(jī)主動(dòng)停止備機(jī)電源;若對(duì)方心跳信號(hào)正常,則由外部指令決定備機(jī)狀態(tài)。其實(shí)現(xiàn)流程如圖4所示。
(2)雙機(jī)任務(wù)流程故障
為有效、準(zhǔn)確地判斷雙機(jī)任務(wù)流程故障,借助隨機(jī)碼表來對(duì)其進(jìn)行輔助判斷。隨機(jī)碼表是一個(gè)32×16的二維short型數(shù)組,數(shù)組中的各個(gè)元素互不相同,查詢生成同步數(shù)據(jù)隨機(jī)碼的公式如下:
式中X為隨機(jī)碼表行號(hào),Y為隨機(jī)碼表列號(hào),TaskID為任務(wù)號(hào),PhaseNum為任務(wù)階段號(hào),ClcNum為任務(wù)周期號(hào)。
主備雙機(jī)存儲(chǔ)同一份隨機(jī)碼表,利用上述公式確定每周期的隨機(jī)碼作為同步數(shù)據(jù),發(fā)送給對(duì)方機(jī)。這樣做大大簡(jiǎn)化了裁決邏輯,也可檢測(cè)出CPU邏輯運(yùn)算單元的錯(cuò)誤。
裁決邏輯:主備機(jī)首先比較同步數(shù)據(jù)中隨機(jī)碼,若隨機(jī)碼不同,則進(jìn)一步比較任務(wù)號(hào)、階段號(hào)、周期號(hào)。若比較結(jié)果相同,則給出計(jì)算機(jī)邏輯運(yùn)算故障信號(hào);若不同,將對(duì)方同步數(shù)據(jù)與己方前后兩周期數(shù)據(jù)比較。若發(fā)現(xiàn)匹配數(shù)據(jù),進(jìn)行備機(jī)與主機(jī)再同步;若失敗,給出任務(wù)流程故障信號(hào)。其實(shí)現(xiàn)程序流程如圖5所示。
故障源判斷:
情況1,若系統(tǒng)出現(xiàn)計(jì)算機(jī)邏輯運(yùn)算故障,則查詢上一周期同步數(shù)據(jù)隨機(jī)碼,且與上一周期保存的歷史數(shù)據(jù)隨機(jī)碼相比較,并根據(jù)比較結(jié)果進(jìn)行切換。
情況2,若系統(tǒng)出現(xiàn)流程故障,則將當(dāng)前系統(tǒng)同步數(shù)據(jù)中的任務(wù)號(hào)、階段號(hào)和周期號(hào)與自身歷史數(shù)據(jù)進(jìn)行比較。根據(jù)任務(wù)號(hào)、階段號(hào)、周期號(hào)是遞增并且不會(huì)發(fā)生突變這一原則進(jìn)行判斷,確定故障源,如圖6所示。
(3)雙機(jī)控制數(shù)據(jù)故障
裁決邏輯:空間機(jī)器人的運(yùn)動(dòng)一般分為兩種模式,一種是預(yù)先規(guī)劃固定軌跡的運(yùn)動(dòng),另一種是相對(duì)于目標(biāo)的自主運(yùn)動(dòng)。主備雙機(jī)根據(jù)機(jī)器人不同的運(yùn)動(dòng)狀態(tài),比較同步數(shù)據(jù)中的控制關(guān)節(jié)角度,配合誤差容忍度給出系統(tǒng)控制數(shù)據(jù)故障信號(hào)。
故障源判斷:在固定規(guī)劃軌跡的模式下,控制數(shù)據(jù)預(yù)先給定,可以將雙機(jī)數(shù)據(jù)與正確數(shù)據(jù)對(duì)比,確定故障源;在自主運(yùn)動(dòng)模式下,關(guān)節(jié)的速度和位移是平滑變化的,不可能發(fā)生突變,可以利用關(guān)節(jié)的最大角速度、最大角加速度、末端的最大速度和最大加速度等邊界值對(duì)當(dāng)前數(shù)據(jù)進(jìn)行邊界檢測(cè),從而判斷出故障源,如圖7所示。
另外,當(dāng)雙機(jī)系統(tǒng)對(duì)故障源的判斷發(fā)生矛盾時(shí),將交由外部指令系統(tǒng)對(duì)其進(jìn)行處理。
2.4 系統(tǒng)恢復(fù)
為保證空間機(jī)器人中央控制計(jì)算機(jī)能夠長(zhǎng)期、穩(wěn)定地運(yùn)行,就需要使其具有從故障狀態(tài)恢復(fù)的能力。根據(jù)其故障原因,分3種情況進(jìn)行制定:
①系統(tǒng)裁定備機(jī)故障,主機(jī)正常,此時(shí)主機(jī)切換為單機(jī)模式繼續(xù)正常執(zhí)行任務(wù),備機(jī)復(fù)位重啟并通知主機(jī),主機(jī)切換到雙機(jī)同步模式,備機(jī)重新與主機(jī)同步,恢復(fù)系統(tǒng)正常運(yùn)行。
②系統(tǒng)裁定主機(jī)故障,備機(jī)正常,此時(shí)主機(jī)讓權(quán),進(jìn)行切換,備機(jī)得權(quán)后變?yōu)橹鳈C(jī),并切換到單機(jī)模式繼續(xù)執(zhí)行系統(tǒng)任務(wù);而主機(jī)讓權(quán)后變?yōu)閭錂C(jī),復(fù)位重啟后與主機(jī)重新進(jìn)行同步,恢復(fù)系統(tǒng)的正常運(yùn)行。
③系統(tǒng)失步,即備機(jī)周期超前或滯后于主機(jī),這種情況并不是造成系統(tǒng)故障,不進(jìn)行切換動(dòng)作。此時(shí)主機(jī)依然正常執(zhí)行系統(tǒng)任務(wù),備機(jī)利用主機(jī)的同步數(shù)據(jù)更新自身狀態(tài),與主機(jī)進(jìn)行再同步。
3 雙機(jī)熱備份系統(tǒng)軟件設(shè)計(jì)
基于中央控制計(jì)算機(jī)雙機(jī)熱備份系統(tǒng)的硬件環(huán)境和策略的制定,將其軟件設(shè)計(jì)為6個(gè)模塊,并基于強(qiáng)實(shí)時(shí)性操作系統(tǒng)VxWorks進(jìn)行實(shí)現(xiàn)。該操作系統(tǒng)提供的分布消息隊(duì)列機(jī)制支持系統(tǒng)軟件的容錯(cuò)設(shè)計(jì),其強(qiáng)實(shí)時(shí)性也滿足空間機(jī)器人任務(wù)的要求。首先,根據(jù)策略的制定,設(shè)計(jì)心跳任務(wù)、同步任務(wù)、故障裁決任務(wù)和系統(tǒng)恢復(fù)任務(wù),另外根據(jù)雙機(jī)通信的需要設(shè)計(jì)RS485總線發(fā)送任務(wù)和RS485總線接收任務(wù)。它們的功能如下:
①心跳任務(wù),任務(wù)名HeartBeat。周期性地檢測(cè)對(duì)方機(jī)發(fā)送的心跳信號(hào),若發(fā)現(xiàn)無心跳信號(hào),則通知故障裁決任務(wù)進(jìn)行故障裁決。
②同步任務(wù),任務(wù)名Synchronize。根據(jù)同步策略中的初始化同步過程進(jìn)行系統(tǒng)時(shí)鐘和任務(wù)的初始化同步,并周期性地監(jiān)視系統(tǒng)同步數(shù)據(jù)。若發(fā)現(xiàn)系統(tǒng)同步數(shù)據(jù)異常,則通知故障裁決任務(wù)進(jìn)行系統(tǒng)故障的裁決。
③故障裁決任務(wù),任務(wù)名ExecSwitch。根據(jù)不同的故障情況,依據(jù)前面敘述的裁決過程對(duì)系統(tǒng)故障源進(jìn)行判斷,并根據(jù)結(jié)果進(jìn)行切換操作,保障系統(tǒng)正常運(yùn)行。另外,通知系統(tǒng)恢復(fù)任務(wù)并嘗試對(duì)系統(tǒng)進(jìn)行恢復(fù)。
④ 系統(tǒng)恢復(fù)任務(wù),任務(wù)名Reconfigure。根據(jù)系統(tǒng)恢復(fù)策略嘗試對(duì)故障機(jī)進(jìn)行恢復(fù),出現(xiàn)“失步”現(xiàn)象時(shí),依據(jù)再同步過程對(duì)備機(jī)進(jìn)行再同步。
它們之間的協(xié)作關(guān)系如圖8所示。
⑤RS485總線接收及發(fā)送任務(wù),任務(wù)名Receive485、Send485。負(fù)責(zé)雙機(jī)的通信,主要包括控制消息的解析,同步數(shù)據(jù)的接收與發(fā)送。
在RS485總線通信任務(wù)中,通信數(shù)據(jù)格式定義如下:
其中,為RS485通信數(shù)據(jù)加入起始Start和結(jié)尾End位,保證RS485通信任務(wù)傳遞數(shù)據(jù)的正確性;Command為雙機(jī)熱備份系統(tǒng)的控制命令,如同步系統(tǒng)時(shí)鐘指令、任務(wù)同步指令等;Syn_data為雙機(jī)同步數(shù)據(jù),它的數(shù)據(jù)結(jié)構(gòu)定義如下:
其中,關(guān)節(jié)數(shù)據(jù)以double類型計(jì)算,但在雙機(jī)通信中轉(zhuǎn)化為16位整數(shù)進(jìn)行傳遞,節(jié)省數(shù)據(jù)流量;Result為裁決結(jié)果,雙機(jī)將比較裁決結(jié)果。如果一致則進(jìn)行相應(yīng)處理,如果矛盾將由指令系統(tǒng)進(jìn)行處理。
雙機(jī)熱備份系統(tǒng)的軟件由以上6個(gè)模塊組成,對(duì)系統(tǒng)進(jìn)行監(jiān)測(cè)、裁決、恢復(fù),保證中央控制計(jì)算機(jī)長(zhǎng)期、穩(wěn)定地運(yùn)行。
4 雙機(jī)熱備份系統(tǒng)驗(yàn)證
當(dāng)中央控制計(jì)算機(jī)啟動(dòng)后,主機(jī)將向備機(jī)發(fā)出同步系統(tǒng)周期指令,同步系統(tǒng)周期時(shí)間;在外部指令系統(tǒng)啟動(dòng)主機(jī)任務(wù)的同時(shí),主機(jī)將發(fā)出指令啟動(dòng)備機(jī)任務(wù)。主機(jī)從接收指令到備機(jī)同步啟動(dòng)任務(wù)所需時(shí)間為1 420 ms,備機(jī)從接收指令到啟動(dòng)任務(wù)所需時(shí)間為1180 ms。該雙機(jī)系統(tǒng)可以快速啟動(dòng)并進(jìn)行同步。
在運(yùn)行過程中,利用錯(cuò)誤注入的測(cè)試方法,預(yù)先在程序中注入錯(cuò)誤,系統(tǒng)檢測(cè)到錯(cuò)誤后,能夠快速的切換,并且備機(jī)可以及時(shí)更新系統(tǒng)數(shù)據(jù),與主機(jī)進(jìn)行再同步,從切換完成到重新同步的平均時(shí)間為592 ms內(nèi),滿足空間機(jī)器人任務(wù)的強(qiáng)實(shí)時(shí)性要求。
結(jié)語
本研究在綜合考慮空間環(huán)境及機(jī)器人任務(wù)特殊性的基礎(chǔ)上,實(shí)現(xiàn)了一種獨(dú)特的雙機(jī)熱備份系統(tǒng)。依據(jù)可能出現(xiàn)的故障類型,設(shè)計(jì)了心跳策略、同步策略、裁決切換策略和恢復(fù)策略,并基于 VxWorks操作系統(tǒng)實(shí)現(xiàn)了雙機(jī)熱備份系統(tǒng)的軟件。經(jīng)驗(yàn)證,該系統(tǒng)具有較好容錯(cuò)能力,可增強(qiáng)空間機(jī)器人系統(tǒng)在復(fù)雜空間環(huán)境下執(zhí)行任務(wù)的可靠性,適合在空間機(jī)器人系統(tǒng)中應(yīng)用。
參考文獻(xiàn)
1. Machida K.Mikami T Precise EV Robot:Flight Model and Telerobotic Operation for ETS-VII 2008
2. Chen Ing-Ray.Bastani Farokh B Warm Standby in Hierarchically Structured Process-Control Programs 2008
3. 楊玲.黃海.侯穎 基于分布存儲(chǔ)的嵌入式系統(tǒng)雙機(jī)備份設(shè)計(jì) [期刊論文] -計(jì)算機(jī)與現(xiàn)代化2007(2)
4. Chen C H.Ting Y.Lu W B.Wang G K Recovery Mechanism Design for Hot Standby Computer System 2008
5. 鄺堅(jiān) Tornado/VxWorks 入門與提高 2004
作者:北京郵電大學(xué) 劉喆 孫漢旭 賈慶軒 史國(guó)振
考慮到空間機(jī)器人中央控制計(jì)算機(jī)的雙機(jī)熱備份系統(tǒng)的特殊性,所構(gòu)建的硬件平臺(tái)如圖1所示。
互為備份的中央控制計(jì)算機(jī)采用完全相同的設(shè)計(jì),通過內(nèi)部和外部的CAN總線與控制模塊和指令系統(tǒng)分別相連。熱備份時(shí),主、備機(jī)從CAN總線上同時(shí)接收數(shù)據(jù),但只有主機(jī)可以通過CAN總線向外部輸出指令及控制數(shù)據(jù)。
主備機(jī)之間通過RS485總線相連,實(shí)現(xiàn)雙機(jī)之間數(shù)據(jù)監(jiān)測(cè)和同步等功能。在主機(jī)和備機(jī)的PIO口分別引出一條心跳線,定時(shí)發(fā)出脈沖信號(hào),用來檢查判斷對(duì)方機(jī)是否具備基本運(yùn)行能力。雙機(jī)進(jìn)行切換時(shí),通過仲裁邏輯電路改變雙機(jī)系統(tǒng)的當(dāng)班權(quán),完成系統(tǒng)的切換操作。
2 雙機(jī)熱備份策略
為保證空間機(jī)器人系統(tǒng)正常、穩(wěn)定地運(yùn)行,根據(jù)空間機(jī)器人中央控制計(jì)算機(jī)雙機(jī)熱備份系統(tǒng)的特點(diǎn),主備雙機(jī)需要根據(jù)系統(tǒng)的同步數(shù)據(jù)和心跳信號(hào)對(duì)對(duì)方機(jī)的運(yùn)行情況進(jìn)行監(jiān)測(cè),保持主備雙機(jī)同步運(yùn)行。當(dāng)系統(tǒng)發(fā)生故障時(shí)利用系統(tǒng)同步數(shù)據(jù)和心跳信號(hào),定位系統(tǒng)發(fā)生的故障,并對(duì)故障源進(jìn)行判斷,完成切換。在切換后,系統(tǒng)將嘗試恢復(fù)故障,整個(gè)策略示意如圖2所示。
2.1 心跳信號(hào)
心跳信號(hào)是該中央控制計(jì)算機(jī)運(yùn)行時(shí)發(fā)送的周期性脈沖信號(hào),是中央控制計(jì)算機(jī)正常運(yùn)行的判斷依據(jù)。
主備雙機(jī)可以通過對(duì)對(duì)方機(jī)心跳信號(hào)的監(jiān)測(cè),來判斷對(duì)方機(jī)是否正常運(yùn)行,同時(shí)心跳信號(hào)也是裁決故障時(shí)的一種輔助判據(jù)。當(dāng)發(fā)現(xiàn)備機(jī)無心跳信號(hào)時(shí),主機(jī)切換到單機(jī)模式,備機(jī)由外部指令系統(tǒng)進(jìn)行處理;當(dāng)發(fā)現(xiàn)主機(jī)無心跳信號(hào)時(shí),備機(jī)獲得當(dāng)班權(quán)變?yōu)橹鳈C(jī)并進(jìn)行輸出,主機(jī)交由外部指令系統(tǒng)處理。
2.2 同步監(jiān)測(cè)
雙機(jī)同步是雙機(jī)熱備份系統(tǒng)能夠正常進(jìn)行系統(tǒng)監(jiān)測(cè),對(duì)故障進(jìn)行正確判斷的基礎(chǔ)。正確的同步策略是雙機(jī)系統(tǒng)能夠及時(shí)檢測(cè)出軟件故障并執(zhí)行正確切換動(dòng)作的前提,也是保證系統(tǒng)在故障發(fā)生之后成功恢復(fù)的關(guān)鍵要素。
為了保證雙機(jī)能夠長(zhǎng)期、穩(wěn)定地處于同步之中,維持系統(tǒng)正常運(yùn)行,制定4項(xiàng)關(guān)鍵同步方法。
①雙機(jī)時(shí)鐘周期同步。當(dāng)主備雙機(jī)上電后,在主機(jī)啟動(dòng)周期定時(shí)器的同時(shí),應(yīng)同時(shí)向備機(jī)發(fā)出消息,通知備機(jī)啟動(dòng)周期定時(shí)器。由于空間機(jī)器人系統(tǒng)以生命周期為單位執(zhí)行任務(wù),所以生命周期的同步是整個(gè)系統(tǒng)保持同步的基礎(chǔ)。若該操作失敗,必須重新進(jìn)行周期定時(shí)器的同步。
②雙機(jī)任務(wù)初始化同步。為保證主備雙機(jī)任務(wù)在同一時(shí)間啟動(dòng),應(yīng)在任務(wù)啟動(dòng)指令傳遞到主機(jī)時(shí),由主機(jī)向備機(jī)發(fā)出指令,啟動(dòng)備機(jī)任務(wù),使備機(jī)進(jìn)人工作模式,其具體步驟如圖3所示。
③雙機(jī)同步數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。機(jī)器人執(zhí)行任務(wù)期間,主備雙機(jī)將在每個(gè)系統(tǒng)生命周期的開始向?qū)Ψ綑C(jī)發(fā)送同步數(shù)據(jù),并將收到的數(shù)據(jù)與自身數(shù)據(jù)進(jìn)行比對(duì),完成對(duì)系統(tǒng)同步數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。
為保證對(duì)系統(tǒng)監(jiān)測(cè)的全面性和判斷故障的準(zhǔn)確性,提取任務(wù)號(hào)、任務(wù)階段號(hào)、系統(tǒng)周期、實(shí)際關(guān)節(jié)角度以及一個(gè)隨機(jī)碼作為系統(tǒng)的同步數(shù)據(jù),如表1所列。
④雙機(jī)再同步。當(dāng)發(fā)現(xiàn)雙機(jī)系統(tǒng)的數(shù)據(jù)出現(xiàn)兩個(gè)周期以內(nèi)的超前或滯后現(xiàn)象時(shí),不認(rèn)為發(fā)生系統(tǒng)故障而進(jìn)行切換,而是直接更新備機(jī)同步數(shù)據(jù),使備機(jī)重新與主機(jī)同步。
2.3 裁決邏輯
裁決是雙機(jī)熱備份系統(tǒng)中至關(guān)重要的一個(gè)環(huán)節(jié)。誘發(fā)空間機(jī)器人系統(tǒng)出現(xiàn)故障的原因很多,在其工作的空間環(huán)境中存在著大量高能粒子,極易使中央控制計(jì)算機(jī)電位發(fā)生反轉(zhuǎn)造成系統(tǒng)失常。通信線路的故障和隨機(jī)產(chǎn)生的誤碼率也很容易造成系統(tǒng)失常。通過分析總結(jié),空間機(jī)器人系統(tǒng)最易出現(xiàn)3種故障類型,即雙機(jī)通信線路故障、系統(tǒng)任務(wù)流程故障和系統(tǒng)控制數(shù)據(jù)故障。為保證雙機(jī)熱備份系統(tǒng)及時(shí)、準(zhǔn)確地檢測(cè)故障,判斷故障源,做出正確的切換動(dòng)作,分別為3種故障制定相應(yīng)的故障裁決邏輯。
(1)雙機(jī)通信線路故障
裁決邏輯:當(dāng)RS485接收模塊連續(xù)3周期沒有接收到對(duì)方的同步數(shù)據(jù)時(shí),給出故障信號(hào)。為避免計(jì)算機(jī)重復(fù)進(jìn)行裁決判斷,停止同步數(shù)據(jù)發(fā)送,同時(shí)檢測(cè)備機(jī)心跳信號(hào)。若備機(jī)心跳信號(hào)停止,則由主機(jī)主動(dòng)停止備機(jī)電源;若對(duì)方心跳信號(hào)正常,則由外部指令決定備機(jī)狀態(tài)。其實(shí)現(xiàn)流程如圖4所示。
(2)雙機(jī)任務(wù)流程故障
為有效、準(zhǔn)確地判斷雙機(jī)任務(wù)流程故障,借助隨機(jī)碼表來對(duì)其進(jìn)行輔助判斷。隨機(jī)碼表是一個(gè)32×16的二維short型數(shù)組,數(shù)組中的各個(gè)元素互不相同,查詢生成同步數(shù)據(jù)隨機(jī)碼的公式如下:
式中X為隨機(jī)碼表行號(hào),Y為隨機(jī)碼表列號(hào),TaskID為任務(wù)號(hào),PhaseNum為任務(wù)階段號(hào),ClcNum為任務(wù)周期號(hào)。
主備雙機(jī)存儲(chǔ)同一份隨機(jī)碼表,利用上述公式確定每周期的隨機(jī)碼作為同步數(shù)據(jù),發(fā)送給對(duì)方機(jī)。這樣做大大簡(jiǎn)化了裁決邏輯,也可檢測(cè)出CPU邏輯運(yùn)算單元的錯(cuò)誤。
裁決邏輯:主備機(jī)首先比較同步數(shù)據(jù)中隨機(jī)碼,若隨機(jī)碼不同,則進(jìn)一步比較任務(wù)號(hào)、階段號(hào)、周期號(hào)。若比較結(jié)果相同,則給出計(jì)算機(jī)邏輯運(yùn)算故障信號(hào);若不同,將對(duì)方同步數(shù)據(jù)與己方前后兩周期數(shù)據(jù)比較。若發(fā)現(xiàn)匹配數(shù)據(jù),進(jìn)行備機(jī)與主機(jī)再同步;若失敗,給出任務(wù)流程故障信號(hào)。其實(shí)現(xiàn)程序流程如圖5所示。
故障源判斷:
情況1,若系統(tǒng)出現(xiàn)計(jì)算機(jī)邏輯運(yùn)算故障,則查詢上一周期同步數(shù)據(jù)隨機(jī)碼,且與上一周期保存的歷史數(shù)據(jù)隨機(jī)碼相比較,并根據(jù)比較結(jié)果進(jìn)行切換。
情況2,若系統(tǒng)出現(xiàn)流程故障,則將當(dāng)前系統(tǒng)同步數(shù)據(jù)中的任務(wù)號(hào)、階段號(hào)和周期號(hào)與自身歷史數(shù)據(jù)進(jìn)行比較。根據(jù)任務(wù)號(hào)、階段號(hào)、周期號(hào)是遞增并且不會(huì)發(fā)生突變這一原則進(jìn)行判斷,確定故障源,如圖6所示。
(3)雙機(jī)控制數(shù)據(jù)故障
裁決邏輯:空間機(jī)器人的運(yùn)動(dòng)一般分為兩種模式,一種是預(yù)先規(guī)劃固定軌跡的運(yùn)動(dòng),另一種是相對(duì)于目標(biāo)的自主運(yùn)動(dòng)。主備雙機(jī)根據(jù)機(jī)器人不同的運(yùn)動(dòng)狀態(tài),比較同步數(shù)據(jù)中的控制關(guān)節(jié)角度,配合誤差容忍度給出系統(tǒng)控制數(shù)據(jù)故障信號(hào)。
故障源判斷:在固定規(guī)劃軌跡的模式下,控制數(shù)據(jù)預(yù)先給定,可以將雙機(jī)數(shù)據(jù)與正確數(shù)據(jù)對(duì)比,確定故障源;在自主運(yùn)動(dòng)模式下,關(guān)節(jié)的速度和位移是平滑變化的,不可能發(fā)生突變,可以利用關(guān)節(jié)的最大角速度、最大角加速度、末端的最大速度和最大加速度等邊界值對(duì)當(dāng)前數(shù)據(jù)進(jìn)行邊界檢測(cè),從而判斷出故障源,如圖7所示。
另外,當(dāng)雙機(jī)系統(tǒng)對(duì)故障源的判斷發(fā)生矛盾時(shí),將交由外部指令系統(tǒng)對(duì)其進(jìn)行處理。
2.4 系統(tǒng)恢復(fù)
為保證空間機(jī)器人中央控制計(jì)算機(jī)能夠長(zhǎng)期、穩(wěn)定地運(yùn)行,就需要使其具有從故障狀態(tài)恢復(fù)的能力。根據(jù)其故障原因,分3種情況進(jìn)行制定:
①系統(tǒng)裁定備機(jī)故障,主機(jī)正常,此時(shí)主機(jī)切換為單機(jī)模式繼續(xù)正常執(zhí)行任務(wù),備機(jī)復(fù)位重啟并通知主機(jī),主機(jī)切換到雙機(jī)同步模式,備機(jī)重新與主機(jī)同步,恢復(fù)系統(tǒng)正常運(yùn)行。
②系統(tǒng)裁定主機(jī)故障,備機(jī)正常,此時(shí)主機(jī)讓權(quán),進(jìn)行切換,備機(jī)得權(quán)后變?yōu)橹鳈C(jī),并切換到單機(jī)模式繼續(xù)執(zhí)行系統(tǒng)任務(wù);而主機(jī)讓權(quán)后變?yōu)閭錂C(jī),復(fù)位重啟后與主機(jī)重新進(jìn)行同步,恢復(fù)系統(tǒng)的正常運(yùn)行。
③系統(tǒng)失步,即備機(jī)周期超前或滯后于主機(jī),這種情況并不是造成系統(tǒng)故障,不進(jìn)行切換動(dòng)作。此時(shí)主機(jī)依然正常執(zhí)行系統(tǒng)任務(wù),備機(jī)利用主機(jī)的同步數(shù)據(jù)更新自身狀態(tài),與主機(jī)進(jìn)行再同步。
3 雙機(jī)熱備份系統(tǒng)軟件設(shè)計(jì)
基于中央控制計(jì)算機(jī)雙機(jī)熱備份系統(tǒng)的硬件環(huán)境和策略的制定,將其軟件設(shè)計(jì)為6個(gè)模塊,并基于強(qiáng)實(shí)時(shí)性操作系統(tǒng)VxWorks進(jìn)行實(shí)現(xiàn)。該操作系統(tǒng)提供的分布消息隊(duì)列機(jī)制支持系統(tǒng)軟件的容錯(cuò)設(shè)計(jì),其強(qiáng)實(shí)時(shí)性也滿足空間機(jī)器人任務(wù)的要求。首先,根據(jù)策略的制定,設(shè)計(jì)心跳任務(wù)、同步任務(wù)、故障裁決任務(wù)和系統(tǒng)恢復(fù)任務(wù),另外根據(jù)雙機(jī)通信的需要設(shè)計(jì)RS485總線發(fā)送任務(wù)和RS485總線接收任務(wù)。它們的功能如下:
①心跳任務(wù),任務(wù)名HeartBeat。周期性地檢測(cè)對(duì)方機(jī)發(fā)送的心跳信號(hào),若發(fā)現(xiàn)無心跳信號(hào),則通知故障裁決任務(wù)進(jìn)行故障裁決。
②同步任務(wù),任務(wù)名Synchronize。根據(jù)同步策略中的初始化同步過程進(jìn)行系統(tǒng)時(shí)鐘和任務(wù)的初始化同步,并周期性地監(jiān)視系統(tǒng)同步數(shù)據(jù)。若發(fā)現(xiàn)系統(tǒng)同步數(shù)據(jù)異常,則通知故障裁決任務(wù)進(jìn)行系統(tǒng)故障的裁決。
③故障裁決任務(wù),任務(wù)名ExecSwitch。根據(jù)不同的故障情況,依據(jù)前面敘述的裁決過程對(duì)系統(tǒng)故障源進(jìn)行判斷,并根據(jù)結(jié)果進(jìn)行切換操作,保障系統(tǒng)正常運(yùn)行。另外,通知系統(tǒng)恢復(fù)任務(wù)并嘗試對(duì)系統(tǒng)進(jìn)行恢復(fù)。
④ 系統(tǒng)恢復(fù)任務(wù),任務(wù)名Reconfigure。根據(jù)系統(tǒng)恢復(fù)策略嘗試對(duì)故障機(jī)進(jìn)行恢復(fù),出現(xiàn)“失步”現(xiàn)象時(shí),依據(jù)再同步過程對(duì)備機(jī)進(jìn)行再同步。
它們之間的協(xié)作關(guān)系如圖8所示。
⑤RS485總線接收及發(fā)送任務(wù),任務(wù)名Receive485、Send485。負(fù)責(zé)雙機(jī)的通信,主要包括控制消息的解析,同步數(shù)據(jù)的接收與發(fā)送。
在RS485總線通信任務(wù)中,通信數(shù)據(jù)格式定義如下:
其中,為RS485通信數(shù)據(jù)加入起始Start和結(jié)尾End位,保證RS485通信任務(wù)傳遞數(shù)據(jù)的正確性;Command為雙機(jī)熱備份系統(tǒng)的控制命令,如同步系統(tǒng)時(shí)鐘指令、任務(wù)同步指令等;Syn_data為雙機(jī)同步數(shù)據(jù),它的數(shù)據(jù)結(jié)構(gòu)定義如下:
其中,關(guān)節(jié)數(shù)據(jù)以double類型計(jì)算,但在雙機(jī)通信中轉(zhuǎn)化為16位整數(shù)進(jìn)行傳遞,節(jié)省數(shù)據(jù)流量;Result為裁決結(jié)果,雙機(jī)將比較裁決結(jié)果。如果一致則進(jìn)行相應(yīng)處理,如果矛盾將由指令系統(tǒng)進(jìn)行處理。
雙機(jī)熱備份系統(tǒng)的軟件由以上6個(gè)模塊組成,對(duì)系統(tǒng)進(jìn)行監(jiān)測(cè)、裁決、恢復(fù),保證中央控制計(jì)算機(jī)長(zhǎng)期、穩(wěn)定地運(yùn)行。
4 雙機(jī)熱備份系統(tǒng)驗(yàn)證
當(dāng)中央控制計(jì)算機(jī)啟動(dòng)后,主機(jī)將向備機(jī)發(fā)出同步系統(tǒng)周期指令,同步系統(tǒng)周期時(shí)間;在外部指令系統(tǒng)啟動(dòng)主機(jī)任務(wù)的同時(shí),主機(jī)將發(fā)出指令啟動(dòng)備機(jī)任務(wù)。主機(jī)從接收指令到備機(jī)同步啟動(dòng)任務(wù)所需時(shí)間為1 420 ms,備機(jī)從接收指令到啟動(dòng)任務(wù)所需時(shí)間為1180 ms。該雙機(jī)系統(tǒng)可以快速啟動(dòng)并進(jìn)行同步。
在運(yùn)行過程中,利用錯(cuò)誤注入的測(cè)試方法,預(yù)先在程序中注入錯(cuò)誤,系統(tǒng)檢測(cè)到錯(cuò)誤后,能夠快速的切換,并且備機(jī)可以及時(shí)更新系統(tǒng)數(shù)據(jù),與主機(jī)進(jìn)行再同步,從切換完成到重新同步的平均時(shí)間為592 ms內(nèi),滿足空間機(jī)器人任務(wù)的強(qiáng)實(shí)時(shí)性要求。
結(jié)語
本研究在綜合考慮空間環(huán)境及機(jī)器人任務(wù)特殊性的基礎(chǔ)上,實(shí)現(xiàn)了一種獨(dú)特的雙機(jī)熱備份系統(tǒng)。依據(jù)可能出現(xiàn)的故障類型,設(shè)計(jì)了心跳策略、同步策略、裁決切換策略和恢復(fù)策略,并基于 VxWorks操作系統(tǒng)實(shí)現(xiàn)了雙機(jī)熱備份系統(tǒng)的軟件。經(jīng)驗(yàn)證,該系統(tǒng)具有較好容錯(cuò)能力,可增強(qiáng)空間機(jī)器人系統(tǒng)在復(fù)雜空間環(huán)境下執(zhí)行任務(wù)的可靠性,適合在空間機(jī)器人系統(tǒng)中應(yīng)用。
參考文獻(xiàn)
1. Machida K.Mikami T Precise EV Robot:Flight Model and Telerobotic Operation for ETS-VII 2008
2. Chen Ing-Ray.Bastani Farokh B Warm Standby in Hierarchically Structured Process-Control Programs 2008
3. 楊玲.黃海.侯穎 基于分布存儲(chǔ)的嵌入式系統(tǒng)雙機(jī)備份設(shè)計(jì) [期刊論文] -計(jì)算機(jī)與現(xiàn)代化2007(2)
4. Chen C H.Ting Y.Lu W B.Wang G K Recovery Mechanism Design for Hot Standby Computer System 2008
5. 鄺堅(jiān) Tornado/VxWorks 入門與提高 2004
作者:北京郵電大學(xué) 劉喆 孫漢旭 賈慶軒 史國(guó)振
提交
查看更多評(píng)論
其他資訊
工業(yè)機(jī)器人控制系統(tǒng)的開放體系結(jié)構(gòu)
工業(yè)機(jī)器人離線編程及無碰撞路徑規(guī)劃系統(tǒng)的開發(fā)研究
工業(yè)機(jī)器人手臂結(jié)構(gòu)的有限元分析與研究
工業(yè)機(jī)器人通用控制器研究開發(fā)
工業(yè)機(jī)器人網(wǎng)絡(luò)控制與編程